package com.study.web.api;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.study.bean.myabtisplis.User;
import com.study.r.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.PostConstruct;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *
 */
@Log4j2
@RestController
@RequestMapping("/api")
@Api("商城接口")
public class ApiController {

    private JSONObject r;

    @PostConstruct
    public void init() {
        r = new JSONObject();
        r.put("status", 0);
    }

    @Autowired
    JdbcTemplate jdbcTemplate;

    @GetMapping("users")
    public R users() {
        log.info("接受请求<>！");
        List<User> query = jdbcTemplate.query("select *  from user ", new BeanPropertyRowMapper(User.class));
        return R.ok().data("list", query);
    }

    /* 轮播图接口 */
    @GetMapping("getlunbo")
    @ApiOperation("轮播图获取")
    public JSONObject getlunbo() {

        List list = new ArrayList();
        list.add(new Result(1,
                "http://www.itcast.cn/subject/phoneweb/index.html",
                "http://m.itheima.com/images/slidead/mobile/20191213180241750x410.jpg"));
        list.add(new Result(2,
                "http://www.itcast.cn/subject/phoneweb/index.html",
                "http://m.itheima.com/images/slidead/mobile/20191210154717750-410.jpg"));
        list.add(new Result(3,
                "http://www.itcast.cn/subject/phoneweb/index.html",
                "http://m.itheima.com/images/slidead/mobile/20190327135101750x410-%E4%BC%A0%E6%99%BA%E9%BB%91%E9%A9%AC%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%B9%BB%E7%81%AF.jpg"));
        System.out.println(JSON.toJSONString(list));
        r.put("message", list);
        return r;
    }

    @GetMapping("getgoods")
    @ApiOperation("获取商品列表")
    public JSONObject getgoods(String pageindex) {
        Map map = new HashMap();
        map.put("id", 1);
        map.put("title", "华为（HUAWEI）荣耀6Plus 16G双4G版");
        map.put("add_time", "2015-04-19T16,51:03.000Z");
        map.put("zhaiyao", "荣耀6 Plus，该机型分为两款型号，分别为PE-");
        map.put("click", 0);
        map.put("img_url", "http://demo.dtcms.net/upload/201504/20/thumb_201504200046589514.jpg");
        map.put("sell_price", 2195);
        map.put("market_price", 2499);
        map.put("stock_quantity", 60);
        Map map2 = new HashMap();
        map2.put("id", 2);
        map2.put("title", "华为（HUAWEI）荣耀6Plus 16G双4G版");
        map2.put("add_time", "2015-04-19T16,51:03.000Z");
        map2.put("zhaiyao", "荣耀6 Plus，该机型分为两款型号，分别为PE-");
        map2.put("click", 0);
        map2.put("img_url", "http://demo.dtcms.net/upload/201504/20/thumb_201504200046589514.jpg");
        map2.put("sell_price", 2195);
        map2.put("market_price", 2499);
        map2.put("stock_quantity", 60);

        Map map3 = new HashMap();
        map3.put("id", 3);
        map3.put("title", "华为（HUAWEI）荣耀6Plus 16G双4G版");
        map3.put("add_time", "2015-04-19T16,51:03.000Z");
        map3.put("zhaiyao", "荣耀6 Plus，该机型分为两款型号，分别为PE-");
        map3.put("click", 0);
        map3.put("img_url", "http://demo.dtcms.net/upload/201504/20/thumb_201504200046589514.jpg");
        map3.put("sell_price", 2195);
        map3.put("market_price", 2499);
        map3.put("stock_quantity", 60);

        List list = new ArrayList();
        list.add(map);
        list.add(map2);
        list.add(map3);
        r.put("message", list);
        return r;
    }

    @GetMapping("getthumimages/{imgid}")
    @ApiOperation("获取详情轮播图")
    public JSONObject getthumimages(String imgid) {
        List list = new ArrayList();
        HashMap h1 = new HashMap<>();
        h1.put("src", "http://demo.dtcms.net/upload/201504/20/thumb_201504200059017695.jpg");
        HashMap h2 = new HashMap<>();
        h1.put("src", "http://demo.dtcms.net/upload/201504/20/thumb_201504200059022920.jpg");
        list.add(h1);
        list.add(h2);
        r.put("message", list);
        return r;
    }

    @GetMapping("goods/getinfo/{id}")
    @ApiOperation("获取详情参数")
    public JSONObject goods(String id) {
        HashMap<String, Object> h1 = new HashMap<>();
        h1.put("id", 87);
        h1.put("title", "华为（HUAWEI）荣耀6Plus 16G双4G版");
        h1.put("add_time", "2015-04-19T16,51,03.000Z");
        h1.put("goods_no", "SD9102356032");
        h1.put("stock_quantity", 60);
        h1.put("market_price", 2499);
        h1.put("sell_price", 2195);

        r.put("message", h1);
        return r;
    }

    @ApiOperation("获取详细介绍")
    @GetMapping("goods/getdesc/{id}")
    public JSONObject getdesc(String id) {
        HashMap<String, Object> h1 = new HashMap<>();
        h1.put("title", "华为（HUAWEI）荣耀6Plus 16G双4G版");
        h1.put("content", "<p>\\r\\n\\t荣耀6 Plus，该机型分为两款型号，" +
                "分别为PE-TL10和PE-UL00的新机型，并且根据工信部设备认证中心公布的信息显示，" +
                "移动版本PE-TL20和PE-TL00M也已经拿到了入网许可证，拥有7.5mm的纤薄机身，" +
                "支持TDD-LTE/TD-SCDMA/GSM网络。双800万后置摄像头+800万前置摄像头。" +
                "采用5.5英寸1080p分辨率显示屏，搭载1.8GHz麒麟925八核处理器，内置3GB RAM+32GB " +
                "ROM存储组合，支持存储卡扩展。\\r\\n</p>\\r\\n<p align=\\\"center\\\">\\r\\n\\t<span style=\\\"color:#FF0000;font-size:16px;\\\"><img class=\\\"gomeImgLoad\\\" alt=\\\"\\\" src=\\\"http://img5.gomein.net.cn/image/bbcimg/productDesc/descImg/201503/desc04/A0004794664/3997361.jpg\\\" /></span> \\r\\n</p>");

        r.put("message", h1);
        return r;
    }

    @ApiOperation("获取图片分类")
    @GetMapping("getimgcategory")
    public JSONObject getimgcategory() {
        List list = new ArrayList();
        list.add(new catrgoty("家居生活", 14));
        list.add(new catrgoty("摄影设计", 15));
        list.add(new catrgoty("明星美女", 16));
        list.add(new catrgoty("空间设计", 17));
        list.add(new catrgoty("户型装饰", 18));
        list.add(new catrgoty("广告摄影", 19));
        list.add(new catrgoty("摄影学习", 20));
        list.add(new catrgoty("摄影器材", 21));
        list.add(new catrgoty("明星写真", 22));
        list.add(new catrgoty("清纯甜美", 23));
        list.add(new catrgoty("古典美女", 24));

        r.put("message", list);
        return r;
    }

    @ApiOperation("二级图片列表")
    @GetMapping("getimages/{cateid}")
    public JSONObject getimages(String cateid) {
        Map m = new HashMap();
        m.put("id", 40);
        m.put("title", "欧式风格继承了巴洛克风格中豪华、动感、多变的视觉效果");
        m.put("img_url", "http://demo.dtcms.net/upload/201504/18/thumb_201504181246376332.jpg");
        m.put("zhaiyao", "继上编欧式客厅装修效果图之后，今天，小编为大家带来的是一组不同类型的欧式卧室装修效果图。欧式卧室的设计风格按不同的地域文化可分为北欧卧室、简欧卧室和传统欧式卧室。在中国，因为欧式风格继承了巴洛克风格中豪华、动感、多变的视觉效果，也吸取了洛可可风格中唯美、律…");

        Map m2 = new HashMap();
        m2.put("id", 41);
        m2.put("title", "居住在这样的房子容易出现自杀或血光之灾的现象");
        m2.put("img_url", "http://demo.dtcms.net/upload/201504/18/thumb_201504181252034877.jpg");
        m2.put("zhaiyao", "1、房屋风水学之地形如果选择在三角形的地方上盖房，此类地方出现自杀现象的机率比较高。如果所住的大楼是呈现三角形的状态，那居住在这样的房子，也是容易出现自杀或血光之灾的现象。2、房屋风水学之电线杆对大门在房屋风水学中，电线杆直对房屋的大门正中或者窗户正中(仅限于…");

        List l = new ArrayList();
        l.add(m);
        l.add(m2);
        r.put("message", l);
        return r;
    }

    @GetMapping("getnewslist")
    @ApiOperation("资讯列表")
    public JSONObject getnewslist() {
        Map m = new HashMap();
        m.put("id", 13);
        m.put("title", "1季度多家房企利润跌幅超50% 去库存促销战打响");
        m.put("add_time", "2015-04-16T03:50:28.000Z");
        m.put("zhaiyao", "房企一季度销售业绩已经陆续公布，克而瑞研究中心统计");
        m.put("click", 1);
        m.put("img_url", "http://demo.dtcms.net/upload/201504/16/201504161149414479.jpg");
        r.put("message", m);
        return r;
    }

    @GetMapping("getnew/{id}")
    @ApiOperation("资讯详情")
    public JSONObject des(String id) {
        Map m = new HashMap();
        m.put("id", 13);
        m.put("title", "1季度多家房企利润跌幅超50% 去库存促销战打响");
        m.put("click", 1);
        m.put("add_time", "2015-04-16T03:50:28.000Z");
        m.put("content", "<p>\r\n\t房企一季度销售业绩已经陆续公布，克而瑞研究中心统计数据显示，今年一季度，TOP20的房企仅6家实现业绩同比增长。\r\n</p>\r\n<p>\r\n\t<b>多家企业销售下滑</b> \r\n</p>\r\n<p>\r\n\t记者了解到，虽然恒大、融创一季度交出了不错的答卷，但是，万科等排名靠前的房企均出现销售下滑。其中万科公布前三个月销售金额为460.6亿元，同比去年的542.3亿元减少15%，而碧桂园公布，截至2015年3月31日止三个月，集团共实现合同销售金额约177.3亿元，同比下跌44.32%。\r\n</p>\r\n<p>\r\n\t<b>此外，一季度多家企业的利润跌幅超过50%。数据显示，万科预计2015年1月至3月归属于上市公司股东的净利润为6亿~7亿元，比上年同期下降54%至61%。</b> \r\n</p>\r\n<p>\r\n\t<b>趋势</b> \r\n</p>\r\n<p>\r\n\t<b>地价占比上升及去库存压力下&nbsp;房企利润回归</b> \r\n</p>\r\n<p>\r\n\t中原地产首席分析师张大伟称，一季度房企销售及利润普遍下滑，主要是因为企业销售节奏的变化，“大部分企业在2013年完成情况非常好，预留了大量签约结转到2014年。但2014年整体企业完成情况较差，大部分企业反而透支了2015年年初的签约，导致2015年签约不尽如人意。”\r\n</p>\r\n<p>\r\n\t同时，张大伟表示，大多数城市住房供大于求，价格过高，未来增值不确定，已经不再是最佳投资选择，因此房地产投资需求也出现显著回落。\r\n</p>\r\n<p>\r\n\t而易居房地产研究院研究员严跃进则表示，一季度部分房企还是坚持降价促销的策略，对此出现利润下滑也是符合预期的。随着地价占房价比例越来越高，开发商利润空间不断被挤压。同时，很多房企目前的营销费用还是比较大的，也会损耗房企利润。\r\n</p>\r\n<p>\r\n\t此外，严跃进说，从长期看，地价占比上升与去库存压力将成为长期趋势，房企已告别高利润时代，回归正常利润成为趋势。\r\n</p>\r\n<p>\r\n\t不过，张大伟认为，3月下半月市场告别签约淡季。部分城市出现小阳春现象，预计整体市场的走势将会继续向好，后续改善型需求的入市量将会有所增加。\r\n</p>\r\n<p>\r\n\t<b>分析：</b> \r\n</p>\r\n<p>\r\n\t<b>房企打响去库存促销战</b> \r\n</p>\r\n<p>\r\n\t“对于房地产市场来说，出现退房的原因有两种：1.收房的时候质量差。2.房价下调。无理由退房对于中国90%成交是期房的房地产市场现状来说，这的确是解决了购房者对房屋质量的担忧。”中原地产首席分析师张大伟对记者表示，后续预计也会有更多企业学习借鉴。\r\n</p>\r\n<p>\r\n\t而亚太城市房地产研究院院长谢逸枫则表示，恒大2015年率先打出全国项目“无理由退房”计划第一枪，意味正式打响房企主动去库存的促销战。\r\n</p>\r\n<p>\r\n\t“承诺无理由退房，意味着开发商承担更多的风险，在资金方面承受更大压力，后续肯定会有企业跟风。”知名地产评论人赵卓文表示。\r\n</p>\r\n<p>\r\n\t因此，有业内人士认为，无理由退房可能加速市场优胜劣汰。夏海钧回应称，中国房地产市场高峰时有五六万家房地产开发企业，现在还有两三万家。市场竞争、行业洗牌再洗掉两万多家，剩几百几千家很正常，“到那时行业整体素质会更高”。\r\n</p>\r\n<p>\r\n\t“在目前这个市场周期，恒大提出无理由退房，也的确更多是为了去库存营销的努力，从营销上看，对增加成交量肯定有帮助。”张大伟表示。\r\n</p>\r\n<p>\r\n\t“常规的降价促销已经无法触及购房者的神经，房企必须使出浑身解数吸引购房者。另一方面是购房者对价格敏感性在减弱，对降价没有之前那么敏感，购房者普遍存在买涨不买跌，无理由退房主要是打消购房者对房价不断下降的顾虑。目的在于制造市场 上涨 预期，引导购房者对后市乐观的态度。”谢逸枫认为。\r\n</p>\r\n<p>\r\n\t也有部分业内人士对“无理由退房”的操作性心存疑虑。\r\n</p>\r\n<p>\r\n\t<b>相关新闻</b> \r\n</p>\r\n<p>\r\n\t<b>恒大宣布全国范围内无理由退房</b> \r\n</p>\r\n<p>\r\n\t恒大地产集团昨日宣布，自今日起，将在全国所有楼盘住宅实施无理由退房，该措施覆盖全国147个城市的305个楼盘。恒大副总裁夏海钧表示，希望住宅“包退”成为市场新常态。\r\n</p>\r\n<p>\r\n\t<b>今日起买恒大房“包退货”</b> \r\n</p>\r\n<p>\r\n\t昨日下午，恒大宣布，全国所有楼盘住宅从4月16日8时起正式实施无理由退房，覆盖恒大所有在售住宅，遍布全国147个城市的305个楼盘。\r\n</p>\r\n<p>\r\n\t恒大集团承诺：凡购买恒大所有楼盘住宅的客户，若已履行《楼宇认购书》、《商品房买卖合同》的各项义务，并且无任何违约行为，则自签署《商品房买卖合同》及《无理由退房协议书》之日起至办理入住手续前的任何时间内，均可无理由退房。\r\n</p>\r\n<p>\r\n\t最新数据显示，2015年1~3月，恒大累计合约销售金额约305.4亿元，其中3月实现合约销售额137.1亿元，&nbsp;恒大地产2014年全年销售额达1315亿元，2015年销售目标定为1500亿元，较2014年目标增36.4%\r\n</p>");
        r.put("message", m);
        return r;
    }
}

@Data
@Accessors(chain = true)
@NoArgsConstructor                 //无参构造
@AllArgsConstructor
class catrgoty implements Serializable {
    private String title;
    private int id;

}

class Result implements Serializable {
    int id;
    String url;
    String img;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getImg() {
        return img;
    }

    public void setImg(String img) {
        this.img = img;
    }

    public Result(int i, String s, String img) {
        this.id = i;
        this.url = s;
        this.img = img;
    }
}